package interfaz;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Hashtable;

import javax.naming.InitialContext;
import javax.swing.*;

import beans.AdministradorClientes;
import beans.Facade;
import entidades.*;


public class InterfazGraficaODVModificarCliente {
     
    public JList listaClientes;
    final DefaultListModel modeloLista=new DefaultListModel();
    public JButton btnModificar;
    public JFrame jfFrame;
    public JPanel jpPanel;

    // Labels para el Formulario
    public JLabel jlIdCliente;
    public JLabel jlNombreCliente;
    public JLabel jlTipoCliente;
    public JLabel jlCuentaCorriente;
    public JLabel jlEmail;
    public JLabel jlCondVenta;
    public JLabel jlCondIngBrutos;
    public JLabel jlSaldoCC;
    
    // Area de Texto para ingresar los datos
    
    public JTextField jtIdCliente;
    public JTextField jtNombreCliente;
    public JTextField jtTipoCliente;
    public JTextField jtCuentaCorriente;
    public JTextField jtSaldoCC;
    public JTextField jtEmail;
    public JTextField jtCondVenta;
    public JTextField jtCondIngBrutos;
    public String [] etiquetas = 
    {"Nombre del Cliente", "Tipo de Cliente", "Nro. Cuenta Corriente", "Saldo Cuenta Corriente", "Email", "Cond. de Venta", "Cond. Ing. Brutos","Id Cliente"};
    public JList jlClientesExistentes;
    
        
    public InterfazGraficaODVModificarCliente(){
        
        inicializar();    
    }
    
    
    public void inicializar(){
    
        jfFrame = new JFrame();
        jpPanel = new JPanel();
        
        // Caracteristicas del Frame
        jfFrame.setTitle("Interfaz OPERADOR ODV - MODIFICAR CLIENTE");
        jfFrame.setSize(640, 520);
        jfFrame.getContentPane().add(jpPanel);
        jpPanel.setLayout(null);
        jpPanel.setSize(640, 520);
        jfFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
        
        
        /*********************************************
         * 
         * Labels y Cajas de Texto
         * 
         *********************************************/   
        
       /* modeloLista.add(0,"hola");
        modeloLista.insertElementAt("chau", 1);
        listaClientes=new JList(modeloLista);
        JScrollPane scrollPane1 = new JScrollPane(listaClientes);
        jfFrame.add(scrollPane1, BorderLayout.WEST);*/
        
        
        jlNombreCliente = new JLabel(etiquetas[0], JLabel.TRAILING);
        jlTipoCliente = new JLabel(etiquetas[1], JLabel.TRAILING);
        jlCuentaCorriente = new JLabel(etiquetas[2], JLabel.TRAILING);
        jlSaldoCC = new JLabel(etiquetas[3], JLabel.TRAILING);
        jlEmail = new JLabel(etiquetas[4], JLabel.TRAILING);
        jlCondVenta = new JLabel(etiquetas[5], JLabel.TRAILING);
        jlCondIngBrutos = new JLabel(etiquetas[6], JLabel.TRAILING);
        jlIdCliente=new JLabel (etiquetas[7],JLabel.TRAILING);
        
        jtIdCliente=new JTextField();
        jtNombreCliente = new JTextField();
        jtTipoCliente = new JTextField();
        jtCuentaCorriente = new JTextField();
        jtSaldoCC = new JTextField();
        jtEmail = new JTextField();
        jtCondVenta = new JTextField();
        jtCondIngBrutos = new JTextField();
        
        // Posicionamiento de los componentes
        jlIdCliente.setBounds(10, 310, 140, 30);
        jtIdCliente.setBounds(160,310,140,30);
        jlNombreCliente.setBounds(10, 30, 140, 30);
        jtNombreCliente.setBounds(160, 30, 140, 30);
        jlTipoCliente.setBounds(10, 70, 140, 30);
        jtTipoCliente.setBounds(160, 70, 140, 30);
        jlCuentaCorriente.setBounds(10, 110, 140, 30);
        jtCuentaCorriente.setBounds(160, 110, 140, 30);
        jlEmail.setBounds(10, 150, 140, 30);
        jtEmail.setBounds(160, 150, 140, 30);
        jlSaldoCC.setBounds(10, 190, 140, 30);
        jtSaldoCC.setBounds(160, 190, 140, 30);
        jlCondVenta.setBounds(10, 230, 140, 30);
        jtCondVenta.setBounds(160, 230, 140, 30);
        jlCondIngBrutos.setBounds(10, 270, 140, 30);
        jtCondIngBrutos.setBounds(160, 270, 140, 30);
        
        
        btnModificar = new JButton("Modificar Cliente");
        btnModificar.setBounds(40,350,200,40);
            
        
        
        btnModificar.addActionListener(new ActionListener() {
             
            public void actionPerformed(ActionEvent e)
            {
            	
            	
            	
            	Cliente cli = new Cliente();
            	cli.setId(Integer.valueOf(jtIdCliente.getText()));
            	
            	cli.setNombreCliente(jtNombreCliente.getText());
            	cli.setTipoCliente(jtTipoCliente.getText());
            	cli.setEmail(jtEmail.getText());
            	// Nro de cuenta, instancio clase cuenta corriente.
            	cli.setCuentaCorriente(new CuentaCorriente());
            	cli.getCuentaCorriente().setNrocuenta(Integer.valueOf(jtCuentaCorriente.getText()));
            	cli.getCuentaCorriente().setSaldoactual(Float.valueOf(jtSaldoCC.getText()));
            	cli.setCondVenta(jtCondVenta.getText());
            	cli.setCondIngBrutos(jtCondIngBrutos.getText());
     
            	  
            	
            	// Llamar al Bean de Administracion Clientes. 
            	try {
	               Hashtable props = new Hashtable();
	         	   props.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
	         	   props.put(InitialContext.PROVIDER_URL,"jnp://127.0.0.1:1099");
	         	   InitialContext context = new InitialContext(props);
	         	   Facade fachada= (Facade) context.lookup("EJBSistemaODVEAR/FacadeBean/remote");
              
	         	   fachada.modificarCliente(cli);
	         	 
	         	   
            	} catch (Exception e1){
            		e1.printStackTrace();
            	}
   
                                
            }
        });   
        
        
        // Agregar al Panel los labels
        jpPanel.add(jlIdCliente);
        jpPanel.add(jlNombreCliente);
        jpPanel.add(jlTipoCliente);
        jpPanel.add(jlCuentaCorriente);
        jpPanel.add(jlEmail);
        jpPanel.add(jlSaldoCC);
        jpPanel.add(jlCondVenta);
        jpPanel.add(jlCondIngBrutos);
        
        // los TextField
        jpPanel.add(jtIdCliente);
        jpPanel.add(jtNombreCliente);
        jpPanel.add(jtTipoCliente);
        jpPanel.add(jtCuentaCorriente);
        jpPanel.add(jtEmail);
        jpPanel.add(jtSaldoCC);
        jpPanel.add(jtCondVenta);
        jpPanel.add(jtCondIngBrutos);
        
        // El boton
        jpPanel.add(btnModificar);
        
        
        JLabel lblClientesConocidos = new JLabel("Clientes Existentes");
        lblClientesConocidos.setBounds(330, 10, 220, 30);
        
        DefaultListModel modeloLista = new DefaultListModel();
        jlClientesExistentes = new JList();
        jlClientesExistentes.setBounds(330, 50, 220, 400);
        //listaClientes.setModel(modeloLista);
        
        jpPanel.add(lblClientesConocidos);
        jpPanel.add(jlClientesExistentes);

        
        jfFrame.setVisible(true);
        
        modeloLista.add(0,"hola");
        modeloLista.insertElementAt("chau", 1);
        listaClientes=new JList(modeloLista);
        JScrollPane scrollPane1 = new JScrollPane(listaClientes);
        jfFrame.add(scrollPane1);
        scrollPane1.setBounds(330, 50, 220, 400);
        
        
        // Me conecto al Bean y saco la lista de clientes
        /*try {
            Hashtable props = new Hashtable();
      	   props.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
      	   props.put(InitialContext.PROVIDER_URL,"jnp://127.0.0.1:1099");
      	   InitialContext context = new InitialContext(props);
      	 
      	 listaClientes.setModel(modeloLista);
      	   AdministradorClientes administradorClientes = (AdministradorClientes) context.lookup("EJBSistemaODVEAR/AdministradorClientesBean/remote");
       */
      	   
      	   
      	  // ArrayList <Cliente> clientesRegistrados =  administradorClientes.getListaClientes();
      	   
      	  /* for (int i=0; i < clientesRegistrados.size();i++)
      	   {   
      		   System.out.println(clientesRegistrados.get(i).getNombreCliente());
      		   //listModel.addElement(clientesRegistrados.get(i).getNombreCliente());
      	   }*/
      	 //System.out.println(clientesRegistrados.get(1).getNombreCliente());
      		   
      	/*	   
     	} catch (Exception e1){
     		e1.printStackTrace();
     	}*/

                         
     }

        

    /****************************************
     * 
     * 
     * Listener para la lista, seleccionar 
     * Un cliente de la lista de existentes
     * 
     * 
     */
    
    /************************************
     * 
     * Objeto CLIENTE completo para la 
     * creacion del cliente.
     * 
     */
    // cli = new Cliente();
    // cli.Nombre = jtNombre.ToString();
    // ..
    // ..
    // ..
    // ..
    // Llamar a 
    // AdministradorClientesBean.AgregarCliente(Cliente cli);
    
        
    /*
    btnAgregar.addActionListener(new ActionListener() {
        
        public void actionPerformed(ActionEvent e)
        {
            // Crea un nuevo frame con la interfaz de compra
            new InterfazGraficaODVSolicitarCotizacion();
        }
    });
    
    */
    }
